#pragma once
#include <vector>
using std::vector;

#include "Game Objects/IBaseInterface.h"

class ObjectManager
{
private:
	// Instance of object manager
	static ObjectManager* objMan;

	vector<IBaseInterface*> m_vObjectList;

	ObjectManager(void);
	~ObjectManager(void);
	ObjectManager(const ObjectManager&);
	ObjectManager& operator=(const ObjectManager&);
public:

	// Get the instance
	static ObjectManager* GetInstance(void);
	static void DeleteInstance(void);

	vector<IBaseInterface*> GetObjectList() { return m_vObjectList; }

	void UpdateObjects(float fElapsedTime);
	void RenderObjects(void);

	void AddObject(IBaseInterface* pObject);
	void RemoveObject(IBaseInterface* pObject);

	void RemoveAllObjects(void);

	bool CheckCollisions();
};